WordPress开发第二篇即hook机制
我们可以把wp_head()以及wp_footer()看成是"钩子",我们可以用别的hook function来钩住它。首先wp_head只有一行代码,那就是do_action('wp_head'),而wp_footer也只有do_action('wp_footer')而已,因此我们可以使用do_action来表现的更加简洁一些。
当我们执行到输出header.php时,就会执行到wp_head(),就如同执行do_action('wp_head'),此时wp核心就会去找所有钩上wp_head这个hook的hook function。我们可以通过add_action('wp_head','print_sth');来给wp_head添加对应的操作,这里需要我们写一个print_sth()函数,我们给出如下范例:
function print_sth(){
echo "WordPress是很优秀的作品奥。"
}
简单来说,hook机制就是:wp核心或者其他插件、主题提供定制功能的人一个置入定制代码(hook function)到特定的执行时间点(hook)的机会。
WordPress中的action分为两种,我们一般称之为action hook以及filter hook,我们刚才看到的wp_head以及wp_footer都是属于action hook。
action hook是当wp核心(主题、插件)在做它们该做的事情的时候,如果执行到有action hook的代码,也就是do_action语法时,就会去寻找对应的hook function,进而执行这些hook functions,也就是那些通过add_action()来加入的hook functions,这样来完成定制功能。但是wp核心并不期望action hook functions会有回传值,因此这里的hook function被看做一个独立切出来运作的功能。也就是说,wp核心做它该做的事,我们做我们想做的事,做完就各自结束。
filter hook是使用add_filter来加入hook functions的,但是所有钩上filter hook的hook functions通常都会接收到参数,而wp核心会期待我们拿到它提供的参数,并且做完我们想要做的事情之后,要回传一个值,让wp核心再利用我们回传的值来接着完成它该做的事情。也就是说,通过我们的干涉,修改了wp核心丢给我们的参数,wp核心再接着拿我们改过的参数,继续完成它该做的事,它就像"过滤"操作一样,因此得名为filter。
有时候我们可能很多地方都添加同一个hook,我们决定出现的顺序就是通过hook function的priority参数来做优先顺序的设定。一般来说默认的优先级都是10.
但是一个网站可能会有很多插件,那么它们彼此之间该如何平衡好呢?我们可以通过$wp_filters这个global变量来取得所有hook的信息,下面是一段代码,这段代码可以获取某个hook所钩住的所有function,如下:
function list_hooked_functions($tag=false)
{
global $wp_filter;
if ($tag)
{
$hook[$tag]=$wp_filter[$tag];
if (!is_array($hook[$tag]))
{
trigger_error("Nothing found for '$tag' hook", E_USER_WARNING);
return;
}
}
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jz/qtcms/12069.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
会提示如下的错误:
时间:2021-01-22
-
在这种情况下尽量选择评
时间:2021-01-22
-
本文是《快速创建网站》
时间:2021-01-22
-
永远不要用与自己有关的
时间:2021-01-22
-
利用Azure新建菜单创建W
时间:2021-01-22
-
有很多的站点都在使用W
时间:2021-01-22
-
Wordpress的下载 配置与Hel
时间:2021-01-08
热门文章
-
有很多的站点都在使用WordPress
时间:2021-01-22
-
永远不要用与自己有关的密码
时间:2021-01-22
-
Wordpress的下载 配置与Helloworld
时间:2021-01-08
-
利用Azure新建菜单创建WordPress网站
时间:2021-01-22
-
本文是《快速创建网站》系列的第6篇
时间:2021-01-22
-
在这种情况下尽量选择评级较高的插件使
时间:2021-01-22
-
会提示如下的错误:
时间:2021-01-22
